Multiple description lattice vector quantization

ABSTRACT

Data is transmitted using multiple description vector quantization by first quantizing the source vector at a lattice vector quantizer. After quantization, a labeling function is applied to the quantized source vector, creating a plurality of data streams. Each data stream is encoded and transmitted over a separate channel. Furthermore, the encoded data is decoded by first retrieving a representation of a sublattice point from a set of sublattice points from the data stream and then, determining a single data code word being associated with the retrieved representation of the sublattice point.

PRIORITY

This application claims the benefit of U.S. Provisional Patent Application Serial No. 60/113,391 entitled “Multiple Description Lattice Vector Quantization” and filed Dec. 23, 1998.

FIELD OF THE INVENTION

The present invention relates to transmitting data over a network. In particular, the present invention relates to systems and methods for transmitting data using multiple description vector quantization.

BACKGROUND

Many ways are known for transmitting different types of data over a network. For example, FIG. 1 displays a block diagram of a system that can transmit audio or video data. In this configuration, source 101 provides some form of analog data. That data is then converted to a digital stream, or quantized, at analog-to-digital converter (ADC) 102. Once the data is quantized, it can be easily encoded by encoder 103, and transmitted to receiver 105 over network 104. Receiver 105 passes the data to decoder 106, which decodes the data, thereby substantially recreating the original data stream. If the data is audio, for example, decoder 106 typically will recreate the data with some level of accuracy so the data can be played and recognized in an acceptable fashion. This configuration is called a “single description” system because only a single stream of data is transmitted from the source to the receiver.

If, however, part of the data-stream transmission is disrupted during its transmission from the source to the receiver, acceptable reconstruction at the receiver may not be possible. To minimize disruptions during transmission, “multiple description” systems can be used. In a multiple-description scheme, an encoder generates multiple streams of data. Each data stream in the multiple streams of data can individually reproduce the original data in an acceptable form. If the decoder receives all the data streams, the original data can be reconstructed very accurately. On the other hand, if only one data stream is received, and reconstructed to X¹ _(n)′, the reconstructed data, and hence the playback, will not be as high quality as the complete reconstruction, but will be acceptable, at least over a short time scale. In general, receiving all the data streams gives optimal reconstruction, but over short periods of time, if one data stream is missing, that missing data stream can be dropped from the reconstruction without serious diminution of the quality of the reconstructed data.

FIG. 2 is a block diagram of the components of a multiple-description system. In this system, source 201 again provides analog data, and this data is quantized at ADC 202. After quantization, the digital data is encoded for transmission at encoder 203. Encoder 203, in a multiple-description scheme, encodes the data into multiple streams for transmission. In FIG. 2, only two streams are shown for simplicity, and only two streams are discussed for simplicity; in principle, however, an arbitrary number of encoded streams can be created and used.

Once the two streams are encoded, they are independently transmitted over network 204 to receiver 205. Receiver 205 contains, in this example, three decoders, 205 a, 205 b and 205 c. If both streams are received at decoder 205 a, the two streams are recombined into an effective reconstruction of the data. If, however, only one of the streams arrives at receiver 205, decoder 205 b or 205 c can decode the data into an acceptable reconstruction of the original data. This reconstruction will typically be of lesser quality than if the two streams are received and combined at decoder 205 a. In general, if parts of one transmitted stream are dropped, then those parts of the transmission will be recreated using the single stream that arrives at the receiver, and the rest of the transmission will be recreated using the two combined streams that are received at decoder 205 a. A decoded single stream will then be played back to a viewer or listener, for example, at the appropriate time during playback, while the recombined double stream will played at all other times.

Known systems use a type of multiple-description coding called “layer” or “hierarchical” coding. In these schemes, an encoder generates two or more streams of bits of varying importance. For example, if two streams are generated, one stream is considered more important than the other stream. This scheme gives the network flexibility to drop bits if, for example, the network is congested. If the network is congested, the network can choose to drop the less-important bits. In this scheme, the network guarantees that it always is going to deliver the most important stream of bits. Thus, users are assured a certain basic quality in the reconstructed video or audio data. If a user, on the other hand, can receive more streams of data, the playback will be of higher quality.

Two general schemes exist for multiple-description coding. One scheme, called scalar quantization, quantizes the source data by assigning a single data number to each sample of the source data. This scalar quantization can be visualized with reference to FIG. 3. FIG. 3 is a representation of scalar quantization in which the horizontal axis represents charge, and the vertical axis represents discrete binary numbers that are assigned to a received charge. With scalar quantization, the input is a scalar, or one-dimensional, quantity. If input voltage is known to lie in a certain range, and only 8 bits are used for quantization, the voltage range is divided up by partitioning the input-voltage range into a series of sub-ranges, and a distinct binary number is assigned to each sub-range.

Another form of quantization, called vector quantization, quantizes the source data by applying a single data number to a fixed plurality of samples of the source data. With vector quantization, voltage input is generalized into multiple dimensions. Thus the charge input has indices, x=(x_(n), x_(n+1) . . . x_(n+m)). x is a charge input that is sampled, for example, at multiple times. Thus, for example, x_(n) might be a charge at time=n, and x₊₁ would be the charge at time=n+1.

Vector quantization can be visualized with reference to FIG. 4. FIG. 4 is a two-dimensional graph in which the vertical and horizontal axes each represent charge sampled in some way from analog data. Each two-dimensional area in the represented plane is assigned a unique data number, thereby encoding the vector represented by every point in the plane. Using the example above, the horizontal axis can represent speech data sampled at time x_(n), and the vertical axis can represent data sampled at time x_(n+1). Note that a two-dimensional plane is used merely for simplicity of representation. A quantized vector can contain an arbitrary number of sampled points.

An achievable rate region for the multiple description problem was first given by El Gamal and Cover in their article titled “Achievable rates for multiple descriptions,” IEEE Trans. Inform. Th., vol. IT-28, November 1982, and Ozarow has shown that this region coincides with the rate distortion region for a memoryless Gaussian source and the squared-error distortion. See L. Ozarow, “On a source coding problem with two channels and three receivers.” The Bell Syst. Tech. J., vol. 59, December 1980. Both articles are incorporated herein by reference. The problem of multiple description quantizer design, including a formulation and solution of the underlying labeling problem in one dimension was presented in a paper by V. A. Vaishampayan, titled “Design of multiple description scalar quantizers,” IEEE Trans. Inform. Theory, vol. 39, pp. 821-34, May 1993, incorporated herein by reference. An asymptotic performance analysis of this quantizer was presented in J. C. Battlo and V. A. Vaishampayan, “Multiple-description transform codes with an application to packetized speech,” in Proceedings of the 1994 IEEE International Symposium on Information Theory, Trondhaim, Norway, June 1994 incorporated herein by reference.

Lattice quantizers (for the single description problem) have been extensively studied. Zador, in his paper titled “Asymptotic quantization error of continuous signals and the quantization dimension,” IEEE Trans. Inform. Th., vol. IT-28, pp. 139-49, March 1982, incorporated herein by reference, used a random quantization argument to give upper and lower bounds on the performance of quantizers for a fixed dimension. Detailed descriptions of the Voronoi regions of specific lattices are given by Conway and Sloane in Sphere Packings, Lattices and Groups. New York: Springer-Verlag, 1988, incorporated herein by reference, and their second moments are evaluated. Fast quantizing algorithms for lattice quantizers are given in J. H. Conway and N. J. A. Sloane, “Fast quantizing and decoding algorithms for lattice quantizers and codes,” IEEE Trans. Inform. Th., vol. 28, pp. 227-32, March 1982, incorporated herein by reference. Gersho, in “Asymptotically optimal block quantization,” IEEE Trans. Inform. Th., vol. IT-25, pp. 373-80, July 1979, incorporated herein by reference, conjectured that for rth power difference distortion measures, any optimal quantizer, in any dimension, has Voronoi regions that are congruent to some polytope.

For multiple-description, hierarchical coding, it does not matter whether the quantization is scalar or vector. What matters is simply that more than one data stream is produced, and each data stream is given a certain relative importance with respect to the other data streams. Many networks, however, cannot guarantee that the most important bits are going to reach their destination. For example, the Internet cannot make any such guarantee. In these cases, the layered approaches do not work very well, because if the most important bits in a data stream are lost, the data may not be reconstructable in a usable form. Thus, a need exists for a multiple-description scheme that does not rely on a hierarchy of data schemes, and so does not rely on a guarantee by the network to deliver the most important data stream.

SUMMARY OF THE INVENTION

To alleviate the problems inherent in known systems, the present invention introduces systems and methods for coding and transmitting data using multiple description lattice vector quantization with lattice codebooks. In one embodiment of the present invention, a source vector is quantized at a lattice vector quantizer. A labeling function is then applied to the quantized source vector, thereby creating at least a first data stream and a second data stream. The first and second data streams are then encoded and transmitted.

To apply the labeling function, in one embodiment of the present invention, the quantized source vector is associated with at least a first sublattice point associated with a first data code word and a second sublattice point associated with a second data code word. The first data code word is then transmitted in the first data stream, and the second data code word is transmitted in the second data stream.

At the receiving end of the transmission, if all data streams are received intact, they are recombined by a decoder, and prepared for playback. If one or more data stream, however, contains gaps when received, the remaining data stream or streams are combined and played back without those missing portions of the incomplete data stream.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a single-description encoding and transmitting scheme, containing a source, and encoder, a network and a decoder.

FIG. 2 is a block diagram of a multiple-description encoding and transmitting scheme, containing a source, an encoder, a network, and a decoder.

FIG. 3 is a representation of scalar quantization in which the horizontal axis represents charge, and the vertical axis represents discrete data numbers that are applied to the received charge.

FIG. 4 is a two-dimensional representation of vector quantization in which the vertical and horizontal axes each represent charge sampled in some way from analog data.

FIG. 5 is a block diagram of a system overview of a multiple description lattice vector quantizer.

FIG. 6 is an example of a portion of a two-dimensional hexagonal lattice used to visualize a lattice Λ.

FIG. 7 is a flow chart of a method embodiment of the present invention detailing how a multiple description lattice vector quantizer is used.

FIG. 8 provides a flow chart for making a labeling function according to one embodiment of the present invention.

FIG. 9 is a flow chart that describes the steps of creating edges.

FIG. 10 displays an example of the results of matching lattice points with edges.

FIG. 11 is a flow chart of how edges are used according to an embodiment of the present invention.

FIG. 12 is a flow chart that displays steps used, in one embodiment of the present invention, for decoding the signal.

FIG. 13 is a block diagram of an apparatus embodiment of the present invention.

FIG. 14 is a block diagram of a multiple description vector quantizer (MDVQ) with a lattice codebook, according to an embodiment of the present invention.

FIG. 15 displays a schematic part of the lattice which also shows sublattice points, according to an embodiment of the present invention.

FIG. 16 displays a set of edges in an example of an embodiment of the present invention.

FIG. 17 displays a represent of a lattice point according to an embodiment of the present invention.

FIG. 18 displays the shortest possible edges, according to an embodiment of the present invention.

FIG. 19 displays an embodiment of the present invention that includes at least two ways of establishing a one-to-one correspondence between the point set and the set of two directed edges {{right arrow over (e)},}.

FIG. 20 displays an illustration of an alternating structure along a straight line for maintaining balance between the two descriptions, according to an embodiment of the present invention.

FIG. 21 displays the results of an optimization procedure, using a hexagonal lattice, according to an embodiment of the present invention.

FIG. 22 displays a plot of reuse index versus cost per lattice point per dimension, according to an embodiment of the present invention.

FIG. 23 displays a lattice point λ and its label.

DETAILED DESCRIPTION

The present invention involves systems and methods for multiple description lattice vector quantization. In particular, the present invention involves systems and methods for constructing, transmitting and decoding a plurality of data streams that represent, either individually or in combination, an original data source. To perform these tasks, a vector quantizer is used to determine a certain sublattice vector that is nearest to a lattice point. Once this sublattice vector is known, a number of data streams are constructed. Each data stream can be used individually, or in combination with the other data streams, to recreate the original lattice vector, and thus the original data represented by the lattice vector.

FIG. 5 is a block diagram of a system overview of a multiple description lattice vector quantizer. For the purposes of simplicity of discussion, a two-dimensional vector space is used here. In general, however, embodiments of the invention can use source vectors and lattice vector quantizers of arbitrary dimension.

In the embodiment shown in FIG. 5, source 501 provides a source vector to lattice vector quantizer 502. Lattice vector quantizer 502 quantizes the source vector, and then labeling function 503 creates two data streams and provides them to data encoders 504 a and 504 b. Again, two data streams, and two encoders, are shown for simplicity of discussion only. The embodiments of the invention can be generalized to an arbitrary number of data streams, each corresponding to an entry in the quantized source vector.

Data encoders 504 a and 504 b transmit the two data streams over network 505, and they are received, in whole or in part, by decoders 506 a, 506 b and 506 c. The decoders then decode the received data streams to give, typically, the best reproduction they can by combining all the received data in the appropriate way.

The two-dimensional source vector received at lattice vector quantizer 502 is defined as two samples of some signal. The lattice vector quantizer contains a lattice code book. This lattice code book contains points λ that belong to the lattice Λ. That is, λ is a lattice vector, and Λ is a collection of lattice vectors.

FIG. 6 is an example of a two-dimensional hexagonal lattice used to visualize a lattice Λ. Each “dot,” or point in the lattice is an element of the lattice code book. The lattice vector quantizer determines which element of the lattice codebook is closest to the source vector. This lattice vector is referred to as the quantized source vector, or simply as the quantized vector.

Once the source vector is quantized, it is sent to a labeling function. The labeling function, in the exemplary lattice shown in FIG. 6, must construct two data streams. Each individual data stream in this embodiment of the present invention should have enough information to be able to reasonably and reliably reconstruct the original data at a receiver. Additionally, if both data streams are received and recombined at decoder 606, the recombined data streams should be of higher quality than each original constituent data stream.

FIG. 7 is a flow chart of a method embodiment of the present invention detailing how a multiple description lattice vector quantizer is used. One skilled in the art should appreciate that the order of the flow chart, like the order of steps in the claims, is not mandatory, and the invention should not be limited to the recited order. Rather, the invention as described and claimed can be practiced in any order that is practicable.

At step 701, a source vector is received at a lattice vector quantizer. The source vector can represent any kind of data stream. At step 702, the lattice vector quantizer quantizes the source vector. For example, the lattice vector quantizer can use, as a lattice, a two-dimensional hexagonal lattice similar to the lattice displayed in FIG. 6. In general, the source vector and lattice are not limited to two dimensions. Rather, they can be of arbitrary dimensionality.

At step 703, a labeling function is applied to the quantized source vector. This labeling function creates a number of data streams, each data stream corresponding to an entry in the source vector. In one embodiment of the present invention, applying the labeling function means that the quantized source vector is associated with at least a first sublattice point that is itself associated with a first data code word, and with a second sublattice point that is itself associated with a second data code word. One skilled in the art should appreciate that the data code word can take any digital form, such as a binary code word, a hexadecimal code word, or any analogous form.

In step 704, these data streams are then encoded, and at step 705, the encoded data streams transmitted as distinct data streams. One skilled in the art should appreciate that all flow charts presented herein, and all claims presented herein, are not limited to the order in which the steps are presented. Rather, the various embodiments can be practiced in any order practicable.

FIG. 8 provides a flow chart for making a labeling function according to one embodiment of the present invention. At step 801, a lattice is selected to be used as the lattice vector quantizer. At step 802, a sublattice is selected by some combination of scaling and rotating the lattice received in step 801. The sublattice is of a “coarser” scale than the original lattice. In other words, the sublattice contains fewer points per unit volume than the original lattice in the lattice vector quantizer. In an embodiment in which the sublattice is a scaled version of the lattice, the sublattice is defined by some index N that is the number of fine lattice points per coarse lattice point. So, for example, in FIG. 6, 31 lattice points are associated with each sublattice point. Thus, the sublattice is 31 times “coarser” than the lattice, and so the index N is 31.

Once this sublattice is created, then at step 803, a discrete Voronoi set of lattice points for a given sublattice point is created. The given sublattice point can be called the origin, to distinguish it from the other sublattice points. Thus, for a given sublattice point, or origin, all the lattice points that are closer to that origin than to any other sublattice point are computed.

At step 804, a plurality of sublattice points are matched to a given sublattice point such that, for a lattice and a Voronoi set with N lattice points, N sets of sublattice points exist, each set containing two sublattice points. Each set of sublattice points is called an edge. Edges represent pairs of sublattice points.

Once the edges are created (i.e., once all the pairs of sublattice points are known), at step 805 each lattice point in the discrete Voronoi set is matched with a distinct edge.

FIG. 9 is a more detailed flow chart that explains the steps in FIG. 8 more precisely.

At step 901, the discrete Voroni set around the origin is created, i.e., all the lattice vectors λ that are closer to the origin than to any other sublattice point. This set is reduced to (N−1)/2 vectors by omitting the zero vector and by keeping only one vector λ_(a) out of each pair λ_(a) and −λ_(a). This is done in any arbitrary manner. The vectors in this set are listed as {λ₁, λ₂, . . . λ_((N−1)/2)}. Step 901 is a more detailed version of step 803.

At step 902, the N shortest sublattice vectors of the form (0, λ′) are created, i.e., the edges {0, λ′₁), (0, λ′₂), . . . , (0, λ′_(N))} are created, where λ′₁, . . . , λ′_(N) are the N sublattice vectors that are closest to the origin. This set is reduced to (N−1)/2 edges by deleting the edge (0,0) and by keeping only one edge out of each part (0,λ′) and (0,−λ′). This choice can be made in any arbitrary manner. The resulting set is

ε={(0,λ′₁), (0,λ′₂), . . . , (0,λ′_((N−1)/2))}.

Step 902 is a more detailed version of step 804.

At step 903, the cost c(i,j)=_(λ′∈Λ′) ^(min){∥λi−−λ¹∥²+∥λ_(i)−(λ′_(j)−λ′)∥²} is computed for each lattice point λ_(i) from step 901 and each edge (0, λ′_(j)) from step 902. α(i,j) denotes the sublattice shift λ′ that achieves this minimum.

At step 904, a one-to-one mapping β is created which maps the integers {1, 2, . . . , (N−1)/2} to the integers {1, 2, . . . , (N−1)/2} and which minimizes the sum $\sum\limits_{i}{{c\left( {i,{\beta (i)}} \right)}.}$

This step can be performed by one of several standard mathematical methods. Step 904 is a more detailed version of step 805.

At step 905, a lookup table is created as follows. The first row of the first column is zero. The 2nd, 3rd, . . . $\left( \frac{N - 1}{2} \right) + 1^{th}$

rows of the 1st column are λ₁, λ₂, . . . $\lambda {\frac{N - 1}{2}.}$

The $\left( \frac{N - 1}{2} \right) + 2^{th}$

through N^(th) rows of the 1st column are −λ₁, −λ₂, . . . $\lambda {\frac{N - 1}{2}.}$

The first row of the second column is the edge {0,0}. The 2nd, 3rd, . . . $\left( \frac{N - 1}{2} \right) + 1^{th}$

rows of the second column are the edges {−α(i,β(i)), λ′_(β(i))−α(i,β(i))}, i=1, 2, . . . , $\left( \frac{N - 1}{2} \right).$

The ${\left( \frac{N - 1}{2} \right) + 2},{\ldots \quad N^{th}}$

rows are the edges {α(i,β(i)), −λ′_(β(i))+α(i,β(i))}, i=1, 2, . . . , $\left( \frac{N - 1}{2} \right),$

respectively.

FIG. 10 displays an example of this lookup table. Column 10 a contains all the lattice points in the discrete Voronoi set of lattice points. Column 10 b displays all the edges as they are matched to each lattice point.

FIG. 11 is a flow chart of how the labels are computed when the multiple description quantizer is being used according to an embodiment of the present invention. At Step 1101, a quantized source vector λ is inputted.

At Step 1102, the closest sublattice vector λ′ to λ is determined. To those skilled in the art this is a routine procedure based on a decoder for the sublattice.

At Step 1103 the shifted source vector {tilde over (λ)}=λ−λ′ is calculated.

At Step 1104, the lookup table from Step 905, here denoted by 1105, is used to find the edge {λ′_(u), λ′_(v)} corresponding to λ.

At Step 1106, the edge is shifted by λ′ to get {λ′_(u)+λ′, λ′_(v)+λ′}.

At Step 1007, the “color” of the edge is determined by (21) below.

At Step 1108, based on λ and the color of the edge, the correct orientation of the edge, i.e. either (λ′_(u)+λ′, λ′_(v)+λ′) (λ′_(v)+λ′, λ′_(u)+λ′) is determined, using (22) and (23) below.

At Step 1109, the first component of the oriented edge (either λ′_(u)+λ′ or λ′_(v)+λ′) is sent to the first data stream, and the second component (either λ′_(v)+λ′ or λ′_(u)+λ′) is sent to the second data stream. The purpose of Step 1108 is to ensure that the quality of transmission of each data stream is balanced between the two streams.

FIG. 12 is a flow chart that displays steps used, in one embodiment of the present invention, for decoding the signal. At step 1201, the two separate data streams are received at a decoder. At step 1202, the decoder determines whether both the data streams are received intact. If both the data streams are received intact, then at step 1203, the two data streams are recombined to give a facsimile of the original message. In one embodiment of the present invention, the decoder, at step 1203 a, looks up in a table what single data word the two points represent, and then, at step 1203 b, reconstructs the original point, and thus the original data value associated with that piece of data.

If one of the data streams is not received intact, then at step 1204, the decoder recombines the portions of the message that are received. At step 1205, the source data is reconstructed using the recombined data where it is available, and non-recombined data where recombined data is not available.

To determine whether both data streams are received intact, in one embodiment of the present invention, the decoder uses an index in each received packet, matching like-indexed packets from each data stream. A single data code word that represents a pair of combined packets is retrieved for decoding and is used to reconstruct the data. If a portion of one of the data streams is not received, that portion of the other data stream is decoded and is used to reconstruct the data.

FIG. 13 is a block diagram of an apparatus according to an embodiment of the present invention. Processor 1301 is coupled to port 1302 and memory 1303. Port 1302 can be used to send and receive data. Memory 1303 stores instructions adapted to be executed by processor 1301 to perform any method embodiment of the present invention. For example, memory 1303 can store instructions adapted to be executed by processor 1301 to quantize a source vector, apply a labeling function to the quantized source vector, thereby creating a first and second stream of data, and then encoding both streams of data.

For the purposes of the present invention, memory includes any medium capable of storing instructions adapted to be executed by a processor. Some examples of such media include, but are not limited to, floppy disks, CDROM, magnetic tape, and hard drives. As used herein, the phrase “adapted to be executed by a processor” is meant to encompass instructions stored in a compressed and/or encrypted format, as well as instructions that have to be compiled or installed by an installer before being executed by the processor.

The present invention also encompasses embodiments of a computer-readable medium (independent of a processor or port) that stores instructions adapted to be executed by a processor to perform embodiments of the method of the present invention. Examples of such a computer readable medium include the examples of memory discussed above.

The discussion below formalizes the concepts expressed above.

The problem of designing a multiple description vector quantizer with lattice codebook Λ is considered. A solution to a certain labeling problem is shown below to be an important step in the design of such quantizers. This labeling problem is solved in the general case. Numerical performance results are obtained for the lattices A₂ and Z^(i), where i=1, 2, 4, 8.

The high-rate squared-error distortions of this vector quantizer are then analyzed for a memoryless source with probability density function p and differential entropy h(p)<∞. For any α∈ (0,1) and rate pair (R,R), it is shown that the two-channel distortion {overscore (d)}₀ and the channel 1 (or channel 2) distortion {overscore (d)}_(s) satisfy ${\lim\limits_{R\rightarrow\infty}{{\overset{\_}{d}}_{0}2^{2{r{({1 - a})}}}}} = {{G(\Lambda)}{2^{2{h{(p)}}}/4}}$

and ${\lim\limits_{R\rightarrow\infty}{{\overset{\_}{d}}_{s}2^{2{r{({1 - a})}}}}} = {{G\left( S_{L} \right)}2^{2{h{(p)}}}}$

where G(Λ) is the normalized second moment of a Voronoi cell of the lattice Λ and G(S_(l)) is the normalized second moment of a sphere in L dimensions.

The problem of designing a multiple description vector quantizer is considered for a memoryless source with probability density function p, differential entropy h(p)<∞ and the squared-error distortion measure. A multiple description vector quantizer encodes vectors for transmission over a two-channel communication system. The objective is to send information about the source vector over each channel in such a way that good performance is obtained when both channels work, and the degradation is small when either channel fails. It is assumed for the discussion below that the encoder has no knowledge about the state of a channel, i.e., it does not know whether a channel has failed or is working.

For the single-description problem, one of the benefits of vector quantization over scalar quantization is a reduction in granular distortion. This is because in higher dimensions it is possible to construct Voronoi cells that are more “spherical” than the hypercube. To be more specific, uniform scalar quantization coupled with entropy coding is known to have mean squared error (mse) {overscore (d)}(R) at entropy R bits/sample satisfying $\begin{matrix} {{{\lim\limits_{R\rightarrow\infty}{{\overset{\_}{d}(R)}2^{2R}}} = \frac{2^{2{h{(p)}}}}{12}};} & (1) \end{matrix}$

whereas if an L-dimensional lattice Λ is used as a codebook, the distortion satisfies $\begin{matrix} {{{\lim\limits_{R\rightarrow\infty}{{{\overset{\_}{d}}_{RD}(R)}2^{2R}}} = {{G(\Lambda)}2^{2{h{(p)}}}}},} & (2) \end{matrix}$

where G(Λ) is the normalized second moment of a Voronoi cell of the lattice. In dimensions larger than one, lattices exist for which G(Λ) is strictly smaller than 1/12. For example, in 8 dimensions, it is possible to gain 0.66 dB by using the lattice E₈ as compared to uniform scalar quantization. By a random quantizing argument, quantizers exist whose asymptotic (in rate) performance goes to 2^(2h(p))/(2πe). The maximum gain possible over entropy-coded scalar quantization is 1.53 dB and lattices provide a useful method for closing this gap.

Consider a multiple description quantizer that sends information across each channel at a rate of R bits/sample. The performance of this system is measured in terms of three distortions: the two-channel distortion {overscore (d)}₀, when both descriptions are available to the decoder; the channel-1 distortion {overscore (d)}₁, when only the first description is available, and the channel-2 distortion, {overscore (d)}₂, when only the second description is available. It is conventionally assumed that {overscore (d)}₁={overscore (d)}₂={overscore (d)}_(s), and this common value is referred to as the side distortion. The objective is to design vector quantizers that minimize {overscore (d)}₀ under the constraint {overscore (d)}_(s)≦D_(s), for a given rate pair (R,R).

For a uniform entropy-coded multiple description quantizer, and any α∈ (0,1) the distortions satisfy $\begin{matrix} {{{\lim\limits_{R\rightarrow\infty}{{{\overset{\_}{d}}_{0}(R)}2^{2{R{({1 + a})}}}}} = {\frac{1}{4}\left( \frac{2^{2{h{(p)}}}}{12} \right)}},} & (3) \\ {{\lim\limits_{R\rightarrow\infty}{{{\overset{\_}{d}}_{s}(R)}2^{2{R{({1 - a})}}}}} = {\left( \frac{2^{2{h{(p)}}}}{12} \right).}} & \quad \end{matrix}$

On the other hand, using a random quantizer argument, by encoding vectors of infinite block length, it is possible to achieve distortions $\begin{matrix} {{{\lim\limits_{R\rightarrow\infty}{{{\overset{\_}{d}}_{0}(R)}2^{2{R{({1 + a})}}}}} = {\frac{1}{4}\left( \frac{2^{2{h{(p)}}}}{2\pi \quad e} \right)}},} & (4) \\ {{\lim\limits_{R\rightarrow\infty}{{{\overset{\_}{d}}_{s}(R)}2^{2{R{({1 - a})}}}}} = {\left( \frac{2^{2{h{(p)}}}}{2\pi \quad e} \right).}} & \quad \end{matrix}$

Thus, in multiple description quantization, achieving a simultaneous reduction in the granular distortion by 1.53 dB for the two-channel and the side distortion is possible.

In single description quantization, an extra transmitted bit reduces the squared error distortion by a factor of 4 (this is seen in (1)). However, additional flexibility is achieved if multiple description quantization is used. If each R is increased by ½ bit, the two-channel distortion can be decreased by 2^(−(1+α)) and the side distortion by 2^(−(1−α)), for any α∈(0,1). This means that by using an extra bit, the distortions {overscore (d)}₀ and {overscore (d)}_(s) can be made to decrease by different amounts as long as the decrease of the product is equal to 4.

From classical quantization theory, one skilled in the art appreciates that the gap between scalar quantization and the rate distortion bound may be closed by using vector quantizers with lattice codebooks. By following this approach, the gap between the two-channel distortion and the rate-distortion bound can likewise be closed. In particular, this approach allows for replacing the factor (1/12) in the expression for {overscore (d)}₀ in (3) with G(Λ), the normalized second moment of the Voronoi region of a lattice point. The main question addressed here is that of simultaneously reducing {overscore (d)}₁. How can such a reduction be achieved and what quantity will replace the factor (1/12) in the expression for {overscore (d)}₁ in (3)? It will be shown through a constructive procedure that the distortion {overscore (d)}₁ can be reduced by solving a specific labeling problem. As will be shown, the quantity that replaces (1/12) is G(S_(l)), the normalized second moment of a sphere in L dimensions.

Lattice-Based Multiple Description Vector Quantization

A block diagram of a multiple description vector quantizer (MDVQ) with a lattice codebook is shown in FIG. 14. An L-dimensional source vector x is first encoded to the nearest vector λ in a lattice Λ⊂^(L). The quantizer mapping will be denoted by λ=Q(x). Information about the selected codevector λ is then sent across the two channels, subject to rate constraints imposed by the individual channels. This is done through a labeling function α. At the decoder, if only channel 1 works, the received information is used to pick a vector λ′₁ from the channel 1 codebook. If only channel 2 two works, the information received over channel 2 is used to pick a codevector λ′₂ from the channel 2 codebook. If both channels work, enough information is assumed to be available decode to λ.

For the purposes of the present invention, channel 1 and channel 2 codebooks are assumed to be identical and equal to Λ′, a sublattice of Λ of index N. Roughly speaking, this means that Λ is N times as dense as Λ′. More precisely, Λ′ is a subgroup of Λ and has precisely N cosets. In addition we will assume that Λ′ is geometrically similar to Λ, i.e., Λ′ can be obtained by scaling and rotating Λ.

The labeling function is now formally described. Because the information sent over channel 1 is used to identify a codevector λ′₁, and the information over channel 2 is used to identify a codevector λ′₂ both in the sublattice Λ′, we will assume that the labeling function, α, is a mapping from Λ into Λ′×Λ′ and that (λ′₁, λ′₁)=α(λ). It is also convenient to define the component mappings λ′₁=α₁(λ) and λ′₂=α₂(λ). Note that to decode to λ when both channels work, it is necessary that α be one-to-one.

Given Λ, Λ′ and α, there are three distortions and two rates associated with an MDVQ. For a given x mapped to the triple (λ, λ′₁, λ′₂) by the MDVQ, the two-channel distortion d₀ is given by ∥x−λ∥², the channel 1 distortion d₁ by ∥x−λ′₁∥² and the channel 2 distortion d₂ by ∥x−λ′₂∥² (the norm of an L-dimensional vector x=(x1, x2, . . . , xL) is assumed to be given by (1/L) ${\sum\limits_{i = 1}^{L}\quad X_{i}^{2}},$

i.e., the norm is dimension normalized). The corresponding average distortions are denoted by {overscore (d)}₀, {overscore (d)}₁ and {overscore (d)}₂.

An entropy coder can be used to transmit the labeled vectors at a rate arbitrarily close to the entropy, i.e., R_(i)=H(α_(i)(Q(X)))/L, i=1,2, where H is the entropy of its argument.

The problem is to design the labeling function α so as to minimize {overscore (d)}₀ subject to {overscore (d)}₁≦D₁ and {overscore (d)}₂≦D₂, given rates (R₁, R₂) and distortions D₁ and D₂. For the purposes of the present invention, the balanced case is used, which is defined to be the case when R₁=R₂=R bits/sample and D₁=D₂.

Notation, Definitions, Distortion and Rate Computation

The points to be labeled belong to a lattice Λ, and the labels will consist of ordered pairs of points from a sublattice Λ′. Lattice points will be denoted by λ, possibly with subscripts, and sublattice points will be denoted by λ′ or λ″, possibly with subscripts. The term “edge” will refer to lines joining points of the sublattice Λ′. The underlying graph has as vertex set the points of Λ′. An undirected edge will be denoted by e and its two directed versions by {right arrow over (e)} and . A dimension-normalized inner-product, defined in the glossary at the end of this application, will be used.

A memoryless source is assumed with probability density function (pdf) p. The L-fold pdf will be denoted by p_(L) where ${p_{L}\left( \left( {x_{1},x_{2},\ldots \quad,x_{L}} \right) \right)} = {\prod\limits_{i = 1}^{L}\quad {{p\left( x_{i} \right)}.}}$

Clearly, the differential entropies satisfy the relation h(p_(L))=Lh(p).

The Voronoi (or nearest neighbor) region V(λ) of a point λ∈Λ is defined by

V(λ)={x:∥x−λ∥≦∥x−λ′∥, ∀λ′∈Λ}.  (5)

Each sublattice point λ′∈Λ′ is associated with a discrete Voronoi set (containing N elements) $\begin{matrix} {{{V_{0}\left( \lambda^{\prime} \right)}{\quad \quad}\underset{=}{\Delta}\quad \left\{ {{\lambda:{{{\lambda - \lambda^{\prime}}} \leq {{\lambda - \lambda^{''}}}}},\quad {\forall{\lambda^{''} \in \Lambda^{\prime}}}} \right\}},} & (6) \end{matrix}$

where in equations (5) and (6) ties are broken in some prearranged manner.

The labeling function α is assumed to be one-to-one. If α(λ)=(λ′₁,λ′₂), then α₁(λ)=λ′₁ and α₂(λ)=λ′₂, i.e., α₁, α₂ are the component functions. Each label can be thought of as a directed edge of a graph with vertex set Λ′. In other words, {right arrow over (e)}=(α₁(λ),α₂(λ)) is the (directed) edge used to label λ. The corresponding undirected edge e={α₁(λ),α₂(λ)} is referred to as the undirected edge or label associated with λ. The undirected edge labeling α_(u) is defined as follows: if {right arrow over (e)}=α(λ), then e=α_(u)(λ), i.e., α_(u) maps λ to its undirected label. Note that while a directed edge is uniquely associated with a lattice point, an undirected edge will in general be associated with two lattice points, one for each orientation of the edge. The main reason for introducing α_(u) is that its construction logically precedes that of α.

Certain sets associated with the two maps will play a central role in the development. The first is ε_(d)(λ′)=α(V₀(λ′)), the set of all labels for points in V₀(λ′) (the subscript d indicates the edges are directed). The corresponding set of undirected edges is referred to as ε_(u)(λ′). More specifically, ε_(u)(λ′)=α_(u)(V₀(λ′)). Note that each edge in ε_(u)(λ′) has at least one directed version in ε_(d)(λ′) and every edge in ε_(d)(λ′) has its undirected version in ε_(u)(λ′). First, ε_(u)(0) is determined, and then used to construct α_(u). To construct α, it is then necessary to choose a particular orientation for the edge α_(u)(λ). This will be done by defining an edge orientation map s(α_(u)(λ),λ) that associates with α_(u)(λ) and λ a particular edge orientation, i.e., one of the directed edges {right arrow over (e)} or , where e=α_(u)(λ). We then define α_(u)(λ)=s(α_(u)(λ),λ).

Distortion Computation

The average two-channel distortion {overscore (d)}₀ is given by $\begin{matrix} {{\overset{\_}{d}}_{0} = {{\sum\limits_{\lambda\varepsilon\Lambda}\quad {\int_{V{(\lambda)}}{{}x}}} - {\lambda {}^{2}{p_{L}(x)}{{x}.}}}} & (7) \end{matrix}$

Because the codebook of the quantizer is a lattice, all the Voronoi regions are congruent. Furthermore, upon assuming that each Voronoi region is small and upon letting v denote the L-dimensional volume of a Voronoi region, the following two-channel distortion is obtained: $\begin{matrix} {{\overset{\_}{d}}_{0} = \frac{\int_{V{(0)}}{{}x{}^{2}{x}}}{v}} & (8) \end{matrix}$

which in terms of the normalized second moment G(Λ), defined by $\begin{matrix} {{{G(\Lambda)} = \frac{\int_{V{(0)}}{{}x{}^{2}{x}}}{v^{1 + {2/L}}}},} & (9) \end{matrix}$

is given by

{overscore (d)} ₀ =G(Λ)v ^(2/L).  (10)

Expressions for the average distortions {overscore (d)}₁ and {overscore (d)}₂ and {overscore (d)}_(s)({overscore (d)}₁+{overscore (d)}₂)/2. are derived below. When only description 1 is available, the distortion is given by $\begin{matrix} \begin{matrix} {{\overset{\_}{d}}_{1} = \quad {{\sum\limits_{\lambda\varepsilon\Lambda}{\int_{V{(\lambda)}}{{}x}}} - {{\alpha_{1}(\lambda)}{}^{2}{p_{L}(x)}{x}}}} \\ {= \quad {{\sum\limits_{\lambda\varepsilon\Lambda}{\int_{V{(\lambda)}}{{}x}}} - \lambda + \lambda - {{\alpha_{1}(\lambda)}{}^{2}{p_{L}(x)}{x}}}} \\ {= \quad {{\sum\limits_{\lambda\varepsilon\Lambda}{\int_{V{(\lambda)}}{{}x}}} - {\lambda {}^{2}{p_{L}(x)}{x}} +}} \\ {\quad {{\sum\limits_{\lambda\varepsilon\Lambda}{\int_{V{(\lambda)}}{{}x}}} - {{\alpha_{1}(\lambda)}{}^{2}{p_{L}(x)}{x}} +}} \\ {\quad {2{\sum\limits_{\lambda\varepsilon\Lambda}{\int_{V{(\lambda)}}{{\langle{{x - \lambda},{\lambda - {\alpha_{1}(\lambda)}}}\rangle}{p_{L}(x)}{x}}}}}} \\ {= \quad {{\overset{\_}{d}}_{0} + {\sum\limits_{\lambda\varepsilon\Lambda}{{}\lambda}} - {{\alpha_{1}(\lambda)}{}^{2}{P(\lambda)}} +}} \\ {\quad {2{\sum\limits_{\lambda\varepsilon\Lambda}{\langle{{{\int_{V{(\lambda)}}{{{xp}_{L}(x)}{x}}} - {\int_{V{(\lambda)}}{\lambda \quad {p_{L}(x)}{x}}}},{\lambda - {\alpha_{1}(\lambda)}}}\rangle}}}} \end{matrix} & (11) \\ {{\underset{=}{(a)}{\overset{\_}{d}}_{0}} + {\sum\limits_{\lambda\varepsilon\Lambda}{{}\lambda}} - {{\alpha_{1}(\lambda)}{}^{2}{P(\lambda)}}} & (12) \end{matrix}$

where P(λ) is the probability of lattice point λ, and (a) follows by assuming that λ is the centroid of its Voronoi region. This is true for the uniform density. For nonuniform densities, there is an error term which goes to zero with the size of the Voronoi region. The first term in (12) is the two-channel distortion and the second term is the excess distortion which is incurred when channel 2 fails. Note that for a given Λ, only the excess distortion term is affected by the labeling α.

It is also useful (as a design guide and for asymptotics which follow) to write down a slightly different expression for the side distortion with the sum being taken over the edge set ε_(d) ^(def)=∪_(λ′εΛ′)ε_(d)(λ). Let {right arrow over (e)}=(λ′₁,λ′₂) label λ. d₁({right arrow over (e)})=∥λ−λ′₁∥² and d₂({right arrow over (e)})=∥λ−λ′₂∥² and d_(s)(e)=(d₁({right arrow over (e)})+d₂({right arrow over (e)}))/2 are defined above. In terms of these quantities, the following holds: $\begin{matrix} \begin{matrix} {{\overset{\_}{d}}_{s} = \quad {{\overset{\_}{d}}_{0} + {\sum\limits_{d_{s}}{\left( \overset{\rightarrow}{e} \right){P\left( \overset{\rightarrow}{e} \right)}\overset{\rightarrow}{e}{\varepsilon ɛ}_{d}}}}} \\ {= \quad {{\overset{\_}{d}}_{0} + {\sum\limits_{\lambda^{\prime}{\varepsilon\Lambda}^{\prime}}{\sum\limits_{\overset{\rightarrow}{e}{{\varepsilon ɛ}_{d}{(\lambda^{\prime})}}}{{d_{s}\left( \overset{\rightarrow}{e} \right)}{P\left( \overset{\rightarrow}{e} \right)}}}}}} \end{matrix} & (13) \end{matrix}$

where the probability of the edge P({right arrow over (e)}), is equal to the probability of the lattice point that it labels, i.e., P({right arrow over (e)})=P₀(λ)).

Rate Computation

Expressions for the rate (in bits/sample) are derived below. Let R₀ be the rate required to address the two-channel codebook for a single channel system. This quantity is useful for evaluating the two-channel distortion as well as for evaluating the rate overhead associated with the multiple description system. First, an expression for R₀ is derived, and then the rate (per-channel) R of the multiple description system is determined.

To derive expressions for R₀ and R, each quantizer bin is recognized to have identical volume v and p_(L)(x) is recognized to be approximately constant over Voronoi regions of the sublattice V(λ′). The second assumption is valid in the limit as the Voronoi regions become small and is standard in asymptotic quantization theory.

The rate R₀=H(Q(X) is given by $\begin{matrix} \begin{matrix} {R = \quad {{- \left( {1/L} \right)}{\sum\limits_{\lambda}{\int_{V{(\lambda)}}{{p_{L}(x)}{x}\quad \log_{2}{\int_{V{(\lambda)}}{{p_{L}(x)}{x}}}}}}}} \\ {\approx \quad {{- \left( {1/L} \right)}{\sum\limits_{\lambda}^{\lambda}\quad {\int_{V{(\lambda)}}{{p_{L}(x)}{x}\quad \log_{2}{p_{L}(\lambda)}v}}}}} \\ {\approx \quad {{h(p)} - {\left( {1/L} \right){{\log_{2}(v)}.}}}} \end{matrix} & (14) \end{matrix}$

For R, the entropy H(α₁(Q(X)) is evaluated, and then the approximation that p_(L)(X) is roughly constant over each Voronoi region of Λ′ is used to get $\begin{matrix} \begin{matrix} {R = \quad {{- \left( {1/L} \right)}{\sum\limits_{\lambda^{\prime}{\varepsilon\Lambda}^{\prime}}{\left( {\sum\limits_{\lambda^{\prime}{{\varepsilon\alpha}_{1}^{- 1}{(\lambda^{\prime})}}}{\int_{V{(\lambda)}}{{p_{L}(x)}{x}}}} \right){\log_{2}\left\lbrack \left( {\sum\limits_{\lambda^{\prime}{{\varepsilon\alpha}_{1}^{- 1}{(\lambda^{\prime})}}}{\int_{V{(\lambda)}}{{p_{L}(x)}{x}}}} \right) \right\rbrack}}}}} \\ \left. {\left. {\approx \quad {{- \left( {1/L} \right)}{\sum\limits_{\lambda^{\prime}{\varepsilon\Lambda}^{\prime}}{\int_{V{(\lambda)}}{{p_{L}(x)}{x}}}}}} \right)\log_{2}{p_{L}\left( \lambda^{\prime} \right)}v} \right) \\ {{\left. {\approx \quad {{- \left( {1/L} \right)}{\sum\limits_{\lambda^{\prime}{\varepsilon\Lambda}^{\prime}}{\int_{V{(\lambda)}}{{p_{L}(x)}\log_{2}{p_{L}\left( \lambda^{\prime} \right)}}}}}} \right){x}} + {\log_{2}({Nv})}} \\ {\approx \quad {{h(p)} - {\left( {1/L} \right){{\log_{2}({Nv})}.}}}} \end{matrix} & (15) \end{matrix}$

Observe that in the above equation, the tern Nv is simply the volume of a fundamental region of the sublattice Λ′ (since it has index N in Λ). Upon writing (15) in terms of R₀, the following is obtained:

R=R ₀−(1/L)log₂(N).  (16)

A single channel system would have used R₀ bits/sample. Instead a multiple description system uses a total of 2R=2R₀−(2/L)log₂(N) bits/sample, and so the rate overhead is R₀−(2/L)log₂(N).

Construction of the Labeling Function

A labeling function α is now sought for which Σ_({right arrow over (e)}∈ε) _(d) _((λ′))d_(s)({right arrow over (e)}) is minimized and is independent of λ′. Since the details are complicated, the first example for the A₂ lattice is determined explicitly. Certain general principles are then identified and used to construct labelings for other lattices.

Labeling the Two-Dimensional Hexagonal Lattice, A₂

The lattice A₂ may be considered to be a subset of R² or as a subset of . Since each approach has its advantages, it is convenient to switch back and forth between the two representations. We consider the lattice A₂ at unit-scale to be generated by the vectors {1,ω}⊂, where ω=−1/2+i{square root over (3)}/2. The associated Gram matrix is $\begin{matrix} \begin{pmatrix} 1 & {{- 1}/2} \\ {{- 1}/2} & 1 \end{pmatrix} \end{matrix}$

and fundamental volume is {square root over (3)}/2. Λ′, a sublattice of Λ is said to be geometrically similar to Λ if it can be obtained by scaling and rotating or reflecting Λ. To be more specific, if matrix G′ generates Λ′ and G generates Λ, then Λ′ is geometrically similar to Λ if and only if G′=cUGB, for some nonzero scalar c, integer matrix U with determinant ±1, and real orthogonal matrix B. The index N is defined as the ratio of the fundamental volumes of Λ′ and Λ and is given in terms of the scale factor c by N=c². It can be shown that Λ′ is similar to Λ if and only if N is of the form a²−ab+b², a, b ∈ ZZ and that Λ′ is generated by u=a+bω, and v=ω(a+b ω). In addition to this restriction on N, in one embodiment of the present invention it is assumed that N=Σ_(i=0) ^(K)A_(i), where A_(i) is the number of lattice points at squared distance i from the origin. In other words, it is assumed that N is the number of points in the first K(N) shells of the lattice. There are infinitely such values N. As an example, the number N=31 is a good one for the hexagonal lattice, since N=A₀+A₁+A₂+A₃+A₄ (A₀=1, A₁=6, A₂=6, A₃=6, A₄=12) and since it is also of the form a²−ab+b², with a=5, b=−1.

AN EXAMPLE

The following example of a labeling function uses a reuse index N=31. The following are the steps in constructing a labeling function.

1. Find a sublattice with index equal to the reuse index.

2. Determine the discrete Voronoi set V₀(0).

3. Determine an undirected label e for every point λ∈ V₀(0).

4. Extend the labeling to the entire lattice using the shift property of the undirected labels.

5. Given λ and its undirected label e, determine the correct oriented label {right arrow over (e)} based on the color of the edge c(e).

A sublattice Λ′ of index equal to 31 is obtained by considering all points of the form au+bv, with u=5−ω and v=ω(5−ω). A part of the lattice which also shows sublattice points is illustrated in FIG. 15. Lattice points have been labeled with lower case letters a, b, c, . . . and sublattice points have been labeled with upper-case letters O, A, B, C, . . . To fix the coordinate system, note that the sublattice point O is the origin of the complex plane and the lattice points a and c have representations 1 and ω respectively. Relative to this basis, the representations of sublattice points A and C are 5−ω and ω(5−ω), respectively. The discrete Voronoi set V₀(0)={0, a, b, c, . . . , y, z, aa, ab, ac, ad} is also shown in FIG. 15. Note that |V₀(0)|=31. Points in V₀(0) will be labeled using directed edges obtained from the following set of 28 undirected edges:

ε_(d)(0)={{O,O},  (17)

{O,A}, {O,B}, {O,C}, {O,D}, {O,E}, {O,F}, {A,C}, {B,D}, {C,E}, {D,F}, {E,A}, {F,B}, {A,D}, {B,E}, {C,F},

{G,D}, {G,E}, {H,E}, {H,F}, {I,F}, {I,A}, {J,B}, {J,A}, {K,C}, {K,B}, {L,C}, {L,D}},  (18)

which are illustrated in FIG. 16. Each point in V₀(0) is then associated with an edge in ε_(u)(0) as shown in FIG. 10. This association was done by hand. The only constraint is that if two lattice points sum to zero, then so do the midpoints of their corresponding edges. This is seen to be true in the table, where lattice points that sum to zero have been placed in the same row. To complete the labeling a directed edge should be assigned to each lattice point based on the color c(e) (0 or 1 valued) associated with that edge. This is illustrated for two cases-for a point that lies in V₀(0) and for a point that lies outside V₀(0).

First consider the point ac, which has been assigned the edge e={C,L}={1+6ω,4−7ω}. This edge has midpoint μ=5/2−1/2ω and it follows from (21) that the color c(e)=└(5/2)/3┘=0. The specific orientation of e is then determined using (22) as follows. Set λ′₁=1+6ω, λ′₂=4−7ω, μ=5/2−1/2ω and λ=1−2ω and obtain <λ′₁−λ′₂,λ−μ>=−15/2<0. From (22), it follows that the directed edge is (L,C).

Now consider a lattice point λ=18+10ω V₀(0). The nearest lattice point is λ′=17+9ω. Compute the difference λ−λ′=(1+ω) (the point b) and use this to look up the corresponding undirected label in FIG. 10. This gives α_(u)(1+ω)={0,B}={0,6+5ω}. Using the shift property, the undirected label for λ is then obtained by shifting the edge by λ′ to give α_(u)(λ)=e={17+9ω, 23+14ω}. To determine the correct edge orientation for e, the color of the edge is first determined using (21). In this case, the color c(e)=1. Now use the direction rule (23) with λ′₁=17+9ω, λ′₂=23+14ω, μ=20+23/2ω and λ=18+10ω to get <λ′₁−λ′₂,λ−μ>=10. Thus α(λ)=(23+14ω, 17+9ω).

The following is an example of the decoding operation. Assume that {right arrow over (e)}=(23+14ω, 17+9ω)) and write its undirected version using the basis vectors of the sublattice u and v to get {4u+3v, 3u+2v}. Using FIG. 10, one must now look for an equivalent edge. One such edge is {O, B}={0, u+v}. Determine the shift required to make the edges coincide. In this case {4u+3v}−λ′={u+v, 0}, with λ′=3u+2v. Upon looking up FIG. 10, the lattice point b is found with representation 1+ω having the undirected edge {O, B} as label. This point is shifted by adding λ′=3u+2v to get one of the candidate points λ=3u+2v+(1+ω)=18+10ω. The other candidate point is obtained from the Property 3 of the labeling function (the sum of the endpoints of an edge is equal to the sum of the points that it labels) and is 22+13ω. One skilled in the art would appreciate that another edge exists in FIG. 10 that is equivalent to the edge for which decoding is desired. However, exactly the same set of candidate points would be obtained by using this edge. To determine the correct point, since c(e)=1, the decoding rule given by (24) is used. The inner product <λ′₁−λ′₂,λ−μ> is negative and it follows that the encoded point is indeed λ=18+10ω.

Several facts are best observed at this point. In FIG. 10, two kinds of undirected edges (of positive length) are shown, the first of which are diameters of a circle centered at 0, and the second of which are not. The diameters are the edges {A,D}, {B,E} and {C,F}. Both orientation of a diameter are used to label points in V₀(0), whereas only one orientation of a non-diameter is used. For an edge which is not a diameter, the remaining orientation labels a lattice point outside V₀(0) as determined by the shift property. For example, consider the label {L,C}. The directed label (L,C) is the label for the point ac=1−2ω∈V₀(0). The lattice point labeled by (C,L) is given by 2μ−(1−2ω)=5−ω−(1−2ω)=4+ω, which belongs to the discrete Voronoi set of the sublattice point A.

The labeling function shown in FIG. 10 exhibits additional symmetry that has not, thus far, been used. If a point is rotated by a multiple of π/3 radians about the origin, its corresponding undirected label is also rotated by the same amount about the origin. Consider Γ={γ_(i)=exp ikπ/3, k=0, 1, . . . , 5}, a rotation group of order 6. By considering equivalence classes relative to this group, the size of this table can be reduced by listing only the undirected edges for the points {o, a, g, n, t, s}.

The above example illustrates the basic steps that are to be followed to label the points in Λ. Additional details and some underlying theory is presented next.

General Principles

The construction of the labeling function involves the following steps:

1. Selection of a geometrically similar sublattice of a given index N.

2. Construction of V₀(0), the discrete Voronoi set of 0.

3. Establishing a mapping between elements of V₀(0) and undirected edges in such a say that certain constraints are satisfied. Optimal construction requires that a specific linear programming problem be solved.

4. Extension of the mapping to the entire lattice.

5. Identification of a specific directed edge to associate with a lattice point, once the undirected edge is known.

A Guiding Principle

Once a sublattice of the correct index has been identified, the next task is to determine a set of labels for lattice points in the set V₀(0).

Suppose that λ receives the label {right arrow over (e)}=λ′₁−λ′₂ as illustrated in FIG. 17. Then d_(s)({right arrow over (e)}) satisfies the identity

2d _(s)({right arrow over (e)})=∥λ−λ′₁∥²+∥λ−λ′₂∥²=(1/2)∥λ′₁−λ′₂∥²+2r ²,  (19)

where r²=∥λ−λ′₁+λ′₂/2∥². From this, it can be inferred that, to keep {overscore (d)}_(s) ({right arrow over (e)}) small, λ′₁ and λ′₂ should be as close together as possible, and, λ should be as close as possible to their midpoint. Thus, in one embodiment of the present invention, the shortest possible edge is chosen with midpoint as close as possible to the point to be labeled.

Construction of ε_(u)(0) and α_(u)

The starting point for determining the set of edges is ε_(d)|_(a1=0) which is chosen as the set of N shortest undirected sublattice edges of the form (0,λ′). This set is illustrated in FIG. 18. Observe that edges in ε_(d)|_(α1=0) come in equivalent pairs. For every λ∈V₀(0) and {right arrow over (e)}∈ε_(d)|_(a1=0), determine d_(s)(λ,[e])=min {tilde over (e)}∈[e]d_(s)(λ,{tilde over (e)}) and let α*(λ,[e])=arg min {tilde over (e)}∈[e]d_(s) (λ,{tilde over (e)}). In other words, α*(λ,[e]) is the “closest” edge to λ which lies in the same equivalence class as e. Clearly, from the guiding principle, the “closest” edge will be the one whose midpoint is the closest to λ. Let β:V₀(0)→ε_(u)|_(a1=0) be one-to-one. Let β* minimize Σ_(λ∈V) ₀ ₍₀₎d_(s)(λ,[β(λ)]) subject to the constraint that equivalent points are mapped to equivalent edges. β* maps a lattice point to an edge coset element in ε_(u)|_(a1=0) in an optimal way, thus identifying the best edge coset for a given lattice point. Define a_(u)(λ)=α*(λ,[β*(λ)]). Since β* identifies the optimal edge coset for each lattice point and α* identifies the best coset representative, given the lattice point and the coset, we obtain the optimal edge for each lattice point by composing these two mappings. It follows that ε_(u)(0)={α_(u)(λ):λ∈V₀(0)}. Extend the mapping to the lattice Λ using the rule a_(u)(λ+λ′)=a_(u)(λ)+λ′.

The constraint imposed on the mapping β needs an explanation. It arises from the third assumption that was made about the labeling function, namely, the sum of the end points of an edge is equal to the sum of the two points that it labels. The argument is as follows. The points in V₀(0) come in equivalent pairs. If two points in V₀(0) are equivalent, they sum to 0. Consider the pair λ_(a) and −λ_(a) and an edge e. If the edge in [e], say e_(a), which is closest to λ_(a), has midpoint a, then the edge in [e] which is closest to −λ_(a) will have midpoint −λ_(−a). Thus ε_(u)(0) contains the edges e_(a) and −e_(a) (which may be identical). Now from the shift property, e_(a) also lies in ε_(u)(2a)=ε_(u)(0)+2a (note that 2a is a sublattice point) and the point it labels, say λ_(b), is given by λ_(b)=−λ_(a)+2a. Thus the two points that are labeled using the undirected edge e_(a), namely λ_(a) and λ_(b) satisfy λ_(a)+λ_(b)=2a, i.e., the midpoint of the edge coincides with the midpoint of the points that receive this edge as label. To summarize, the constraint is a sufficient condition to ensure that the labeling function has Property 3.

It is to be noted that the optimal mapping β* can be obtained using standard techniques in linear programming. Also observe that if we define the group Γ={1,−1}, we may obtain β* as an unconstrained solution by considering only V₀(0)|Γ and ε_(u)|_(a1=0)|Γ. This problem is one of matching (N−1)/2 lattice points to (N−1)/2 edge classes. Further reductions in complexity are obtained by using a larger group, in which case the problem is further reduced to matching (N−1)/o(Γ) points to (N−1)/o(Γ) edge classes, o(Γ) being the order of the group. In this case (A₂ lattice) the group Γ has order 6.

The mapping α_(u) identifies the edge to be associated with λ up to the orientation of the edge. The correct orientation is determined through an edge orientation rule and is related to the issue of maintaining exact balance between the two descriptions. This is described next.

Balance

Given an edge e and points that it labels {λ_(a),λ_(b)}, at least two ways of establishing a one-to-one correspondence exist between the point set and the set of two directed edges {{right arrow over (e)},}. The two possible correspondences are shown in FIG. 19. The first rule favors the second description, the second favors the first. Observe that because of the specific configuration, the distortions are anti-symmetric, i.e., d₁(e) with the first selection rule is equal to d₂(e) for the second and d₂(e) for the first rule is equal to d₁(e) for the second. Because of this anti-symmetry, balance is attainable in an average sense by ensuring that the two correspondences are equally used. To be more specific, the two correspondences are alternated along any straight line of the lattice as shown in FIG. 20. This is the purpose of the edge coloring rule which is described below.

Defining α_(u) on a Restricted Domain

The aim is to construct a mapping α_(u) between V₀(0) and ε_(u)(0), subject to the constraints outlined in the previous section. The constraints, which we repeat here for convenience, state that if α_(u) maps 0 to (0,0) and is onto, and maps equivalent points to equivalent edges, then α_(u) can be correctly extended to the entire lattice. The approach used is to reduce the problem to that of finding an unconstrained mapping from {tilde over (V)}₀(0), a subset of V₀(0), onto [ε_(u)(0)], the set of equivalence classes of edges in ε_(u)(0). Two approaches are outlined: the first places minimal restrictions on the resulting mapping, whereas the second utilizes the inherent symmetries in the lattice more fully in order to reduce the complexity of finding an optimal mapping.

Approach 1

First, {tilde over (V)}₀(0) is constructed. There are (N−1) non-zero lattice points in V₀(0) and M=(N+1)/2 equivalence classes, resulting in a partition P={P₁, P₂, . . . , P_(M)} (recall that points in V₀(0) are equivalent if they sum to zero). Choose a single point from each equivalence class and place it in V₀(0). For this a sign is defined for each lattice point in such a way that each point in a class has a distinct sign (“plus” or “minus”). Only those points with positive signs are chosen. The sign is defined as follows: $\begin{matrix} {{{sgn}\left( {a + {b\quad \omega}} \right)} = \left\{ \begin{matrix} {\frac{a}{a},} & {{a \neq 0},} \\ {\frac{b}{b},} & {{a = 0},{b \neq 0},} \\ {0,} & {{a + {b\quad \omega}} = 0.} \end{matrix} \right.} & (20) \end{matrix}$

For e∈∈_(u)(0), let [e]⊂ε_(u)(0) be the set of edges equivalent to e. Supposing lattice point λ is mapped to edge e, the corresponding cost is d_(s)(λ,e)^(def)∥λ−λ′₁∥²+∥λ−λ′₁∥². d_(s)(λ[e])=min_(e∈[e])d_(s)(λ,e) is defined. This is the cost of labeling λ with the “closest” edge from a single equivalence class. It now remains to determine the best matching between lattice points and equivalence classes of the edges. To describe an embodiment of the present invention, a fully connected bipartite graph is displayed with each left hand node corresponding to λ∈ε_(u)(0). The objective is to find a minimum weighted matching for this graph such that Σ_(λ)d_(s)(λ,[e]) is minimized.

This is a well-known combinatorial optimization problem and several algorithms are known for solving it (the best-known is the so-called Hungarian method). Once the optimum matching is found, a lattice point λ is matched with the closest edge from the chosen class. The lattice point equivalent to λ receives the other edge from this class as a label if the class contains two edges. If not, it receives the same edge as label.

Approach 2

Further reductions are possible in the size of the matching problem—though with a possible penalty in terms of the optimality of the resulting solution. For the A₂ lattice, let τ(λ)=exp(iπ/6)λ and consider the group τ generated by τ. Define two lattice points λ₁∈V₀(λ′₁) and λ₂∈V₀(λ′₂) to be equivalent if τ(λ₁−λ′₁)=λ₂−λ′₂ for some τ∈τ. Once again, a one-to-one correspondence can be set up between single representative lattice points from each class and equivalence classes of the edges. Any group τ will work as long as the orbits of this group contain entire equivalence classes as defined earlier.

An Edge Coloring Rule

Each edge e is assigned a bit (color) c(e) as follows. The two colors can be labeled 0 and 1, or, which is more convenient for drawing pictures, red and green. Consider an edge of the form (a+bω, c+dω). Let Δ₁=|c−a| and let Δ₂=|d−b|. Then $\begin{matrix} {{c(e)} = \left\{ \begin{matrix} {0,} & {{{{if}\quad \Delta_{1}} > {0\quad {and}\quad \left\lfloor {\left( {c + a} \right)/\left( {2\Delta_{1}} \right)} \right\rfloor \quad {is}\quad {even}}},} \\ \quad & {{{{or}\quad {if}\quad \Delta_{1}} = {0{\left\lfloor {\left( {d + b} \right)/\left( {2\Delta_{2}} \right)} \right\rfloor \quad {is}\quad {even}}}},} \\ {1,} & {{otherwise}.} \end{matrix} \right.} & (21) \end{matrix}$

This coloring rule ensures that adjacent edges along any straight line have a different color. Note that the color does not depend on the orientation of an edge, i.e., {right arrow over (e)}, and e have the same color. The coloring rule is a parameter in the edge and point selection rules that is defined below.

Edge Direction Rule and Point Selection Rule

Given an (undirected) edge e, and a point λ for which this edge is a label, an orientation or direction is chosen for the edge using a rule that depends on the color of the edge. Let e={λ′₁,λ′₂} and let μ=(λ′₁+λ′₂)/2. The two rules s_(c)(e, λ),c=0,1, c the color of the edge, are defined as follows (the symbol x denotes the cross- or vector-product of two vectors):

s ₀(e,λ)={(λ′₁,λ′₂), <λ′₁−λ′₂,λ−μ>>0, or <λ′₁−λ′₂,λ−μ>=0, and sign((λ′₁−λ′₂)×(λ−μ))>0(λ′₂,λ′₁), otherwise.  (22)

and

s ₁(e,λ)={(λ′₂,λ′₁), <λ′₁−λ′₂,λ−μ>0, or <λ′₁−λ′₂,λ−μ>=0, and sign((λ′₁−λ′₂)×(λ−μ))>0(λ′₁,λ′₂), otherwise.  (23)

Observe that the result of either rule is the same whether we write e={λ′₁,λ′₂} or e={λ′₂,λ′₁}.

For decoding, since two lattice points receive a label from a given undirected edge, it is necessary to be able to tell which point is being labeled, given the edge orientation. This is the reverse of the edge direction rule. Thus, given a directed edge {right arrow over (e)}=(λ′₁,λ′₂) with midpoint μ and a lattice point λ which could have received this label, the Point Selection Rule g_(c)({right arrow over (e)},λ) selects λ or 2μ−λ based on the edge color c and is given by $\begin{matrix} {{g_{0}\left( {\overset{\rightarrow}{e},\lambda} \right)} = \left\{ \begin{matrix} \lambda & \begin{matrix} {{{\langle{{\lambda_{1}^{\prime} - \lambda_{2}^{\prime}},{\lambda - \mu}}\rangle} > 0},{or}} \\ {{{\langle{{\lambda_{1}^{\prime} - \lambda_{2}^{\prime}},{\lambda - \mu}}\rangle} = 0},{{{and}\quad {{sign}\left( {\left( {\lambda_{1}^{\prime} - \lambda_{2}^{\prime}} \right) \times \left( {\lambda - \mu} \right)} \right)}} > 0}} \end{matrix} \\ {{2\mu} - \lambda} & {{otherwise}.} \end{matrix} \right.} & (24) \\ {and} & \quad \\ {{g_{1}\left( {\overset{\rightarrow}{e},\lambda} \right)} = \left\{ \begin{matrix} {{2\mu} - \lambda} & \begin{matrix} {{{\langle{{\lambda_{1}^{\prime} - \lambda_{2}^{\prime}},{\lambda - \mu}}\rangle} > 0},{or}} \\ {{{\langle{{\lambda_{1}^{\prime} - \lambda_{2}^{\prime}},{\lambda - \mu}}\rangle} = 0},{{{and}\quad {{sign}\left( {\left( {\lambda_{1}^{\prime} - \lambda_{2}^{\prime}} \right) \times \left( {\lambda - \mu} \right)} \right)}} > 0}} \end{matrix} \\ \lambda & {{otherwise}.} \end{matrix} \right.} & (25) \end{matrix}$

Further Reduction in Complexity: Group Construction

Recall the constraint that was imposed on the mapping β. One skilled in the art can consider this map as an unconstrained mapping between cosets Λ/Λ′/Γ and ε_(u)/Λ′/Γ, where Γ is the group of rotations {1, −1} (in complex notation since the discussion is about A₂). This results in having to establish a correspondence between two sets of size (N−1)/2, where 2 is the order of the group. Further reductions in complexity come from selecting a larger group that contains the group {1, −1}. For A₂, the group used is Γ={exp(ikπ/6), k=0, 1, 2, 3, 4, 5}. This reduces the complexity of matching problem to sets of size (N−1)/6. Precise conditions that the group must satisfy, and why a group is used at all, is explained below.

Constructing the Map α

In terms of the notation previously established, we obtain α as follows. Given λ, let e=α_(u)(λ) and let c=c(e). Then α(λ)=s_(c)(e, λ).

Numerical Results

For A_(2,)the results of the optimization procedure are displayed in FIG. 21 along with comparisons to the Z lattice. It is seen that small performance improvements are obtained. Another benefit is that many more points are obtained for (say) the side distortion in a given interval, as compared to the Z lattice.

Labeling Functions for General Lattices

In this section theory is developed for labeling a general lattice Λ using a sublattice Λ′ with [Λ:Λ′]=N. The basic steps remain the same as for A₂. The main difference comes from specific methods for selecting similar sublattices and the group construction. First, some general conditions are established that the group must satisfy Specific groups and sublattice generator matrix constructions will then be given for specific lattices. The generator matrix for Λ will be denoted by G and that for the sublattice by c{tilde over (G)}G , where the columns of the generator matrices are the basis vectors for the lattice.

Sufficient Conditions for the Group, Γ

In all cases, the smallest group to use is Γ={1_(L), −1_(L)}, where 1_(L) is the L-dimensional identity matrix. Here it is shown why a group is useful for reducing the size of the optimization problem and derive sufficient conditions for the group to satisfy.

The idea for further group reduction comes from inherent symmetries in the lattice and the sublattice. The objective is to partition the discrete Voronoi set and the edge set into subsets of equal size with certain distance properties. More specifically, for any subset of lattice points {λ_(i), i=1, 2, . . . , M} in this partition and any subset of edges {e_(i), i=1, 2, . . . , M} in the partition the set of distances D_(i)={d_(s)(λ_(i), e_(j)),j=1,2, . . . , M} should be independent of i. Such sets of points and edges can be obtained by identifying a group of transformations σ={γ_(k), k=1,2 . . . , M} and then identifying the members of the partition as orbits under the action of this group. The group should have the following properties.

1. Γ must have order 2 or greater.

2. Γ is an orthogonal group.

3. Γ preserves the lattice Λ.

4. Γ acts fixed-point free on ^(L), i.e., for any λ∈Γ, λ not the identity, λx=x=>x=0.

5. The order of the group divides the g.c.d. of all the shell sizes.

6. Γ preserves the sublattice.

Item 1 ensures that the group contains 1_(L) and −1_(L). Item 2 ensures that orbits of the group lie entirely within a shell of the lattice. Item 3 is obvious, for otherwise orbits would contain points other than lattice points. Item4 ensures that all orbits are of equal size. Item 5 ensues that each shell is partitioned into an integral number of orbits. Item 6 is similar to Item 3.

Items 3 and 6 will now be examined more closely. Every lattice point λ can be written in terms of the generator matrix G (columns are basis vectors) and an integer vector u as λ=Gu. By requiring γ_(i)Gu=Gγ_(j)u for some γ_(j)∈Γ, we ensure that the lattice is preserved. Similarly, if the sublattice has generator c{tilde over (G)}G , where c is a scalar, then by requiring γ_(j){tilde over (G)}={tilde over (G)}γ_(j), for some γ_(j)∈Γ, the sublattice will also be preserved. In other words we require that Γ normalizes G and {tilde over (G)}.

Group Construction and Generator Matrices

For Z², N is chosen to be odd and of the form N=a²+b², a, b ∈ZZ. The generator matrices are G=I₂, and G′={tilde over (G)}G, with $\begin{matrix} {\overset{\sim}{G} = {\begin{pmatrix} a & {- b} \\ b & a \end{pmatrix}.}} & (26) \end{matrix}$

The group is obtained from {tilde over (G)} and is given by $\begin{matrix} {\Gamma = {\left\{ {{\pm I_{2}},{\pm \begin{pmatrix} 0 & {- 1} \\ 1 & 0 \end{pmatrix}}} \right\}.}} & (27) \end{matrix}$

This group has order 4.

For Z⁴, N is chosen to be odd and a perfect square. Let N=a²+b²+c²+d², a, b, c, d ∈ZZ(any integer can be written this way). The generator matrices are I₄ and G′={tilde over (G)}G, with $\begin{matrix} {\overset{\sim}{G} = {\begin{pmatrix} a & {- b} & {- c} & {- d} \\ b & a & {- d} & c \\ c & d & a & {- b} \\ d & {- c} & b & a \end{pmatrix}.}} & (28) \end{matrix}$

The Group Γ is $\begin{matrix} {\Gamma = {\left\{ {{\pm I_{4}},{\pm \begin{pmatrix} 0 & {- 1} & 0 & 0 \\ 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & {- 1} & 0 \end{pmatrix}},{\pm \begin{pmatrix} 0 & 0 & {- 1} & 0 \\ 0 & 0 & 0 & {- 1} \\ 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \end{pmatrix}},{\pm \begin{pmatrix} 0 & 0 & 0 & {- 1} \\ 0 & 0 & 1 & 0 \\ 0 & {- 1} & 0 & 0 \\ 1 & 0 & 0 & 0 \end{pmatrix}}} \right\}.}} & (29) \end{matrix}$

This group has order 8.

For, Z⁸, let $\begin{matrix} {\gamma_{1} = \begin{pmatrix} 0 & 1 & 0 & 0 & \quad & \quad & \quad & \quad \\ 0 & 0 & 1 & 0 & \quad & \quad & \quad & \quad \\ 0 & 0 & 0 & 1 & \quad & \quad & \quad & \quad \\ {- 1} & 0 & 0 & 0 & \quad & \quad & \quad & \quad \\ \quad & \quad & \quad & \quad & 0 & 1 & 0 & 0 \\ \quad & \quad & \quad & \quad & 0 & 0 & 1 & 0 \\ \quad & \quad & \quad & \quad & 0 & 0 & 0 & 1 \\ \quad & \quad & \quad & \quad & {- 1} & 0 & 0 & 0 \end{pmatrix}} & (30) \end{matrix}$

and $\begin{matrix} {\gamma_{8} = \begin{pmatrix} \quad & \quad & \quad & \quad & 1 & 0 & 0 & 0 \\ \quad & \quad & \quad & \quad & 0 & 0 & 0 & {- 1} \\ \quad & \quad & \quad & \quad & 0 & 0 & {- 1} & 0 \\ \quad & \quad & \quad & \quad & 0 & {- 1} & 0 & 0 \\ {- 1} & 0 & 0 & 0 & \quad & \quad & \quad & \quad \\ 0 & 0 & 0 & 1 & \quad & \quad & \quad & \quad \\ 0 & 0 & 1 & 0 & \quad & \quad & \quad & \quad \\ 0 & 1 & 0 & 0 & \quad & \quad & \quad & \quad \end{pmatrix}} & (31) \end{matrix}$

Then Γ={I₈,γ₁ ^(i),γ₈,γ₁ ^(i),i=1,2, . . . , 7}. The generators are G=I₈ and {tilde over (G)} whose ith column is given by γ_(i)v, with v=(a0b0c0d0)′, where a, b, c, d are chosen to satisfy N=a²+b²+c²+d², N the index of the sublattice.

Numerical computations for the lattices Z^(i), i=1, 2, 4, 8 are presented in FIG. 22. In this figure, Λ has unit scale and the excess distortion term (1/N) Σ_(λ∈V) ₀ ₍₀₎d_(s)(λ) has been plotted against the per-dimension reuse index N^(1/L).

Upper and lower bounds for {overscore (d)}_(s) as given by (13) are now calculated. The regularity of the labeling function and the high rate assumption lead to the following simplification for the expression {overscore (d)}_(s) in (13): $\begin{matrix} {{\overset{\_}{d}}_{s} = {{\overset{\_}{d}}_{0} + {\frac{1}{N}{\sum\limits_{{\lambda\varepsilon}\quad {V_{0}{(0)}}}{{d_{s}(e)}.}}}}} & (32) \end{matrix}$

Thus, to analyze the distortion {overscore (d)}_(s), only the edges that label points in the discrete Voronoi set V₀(0) need be considered. The analysis relies on knowing precisely the lengths of these edges (which depends on the labeling function construction). Suppose that λ is labeled by e=(λ′₁,λ′₂) as illustrated in FIG. 23. Let l(e) denote the length of the edge e=(λ′₁,λ′₂), i.e., l(e)=∥λ′₁−λ′₂∥ and let r be the distance of the point λ from the midpoint (λ′₁+λ′₂)/2. Then

2d _(s)(e)=∥λ−λ′₁∥²+∥λ−λ′₂∥²=(1/2)l(e)²+2r ².  (33)

A simple lower bound for d_(s)(e) is obtained by setting r to zero in the above equation and an upper bound is obtained by replacing r with r*(Λ′)=2R(Λ′), where R(Λ′) is the covering radius of the sublattice. The upper bound is an application of the triangle inequality. Thus,

(1/4)l ²(e)≦d _(s)(e)≦(1/4)l ²(e)+r*(Λ′)²,  (34)

which, by using (32) leads to the bounds $\begin{matrix} {{{\overset{\_}{d}}_{0} + {\frac{1}{4N}{\sum\limits_{{\lambda\varepsilon}\quad {V_{0}{(0)}}}{l^{2}(e)}}}} \leq {\overset{\_}{d}}_{s} \leq {{\overset{\_}{d}}_{0} + {\overset{\_}{d}}_{0} + {\frac{1}{4N}{\sum\limits_{{\lambda\varepsilon}\quad {V_{0}{(0)}}}{l^{2}(e)}}} + {r*{\left( \Lambda^{\prime} \right)^{2}.}}}} & (35) \end{matrix}$

Asymptotic Performance

To carry out a rate-distortion analysis, Λ and Λ′ are scaled by a real number β. v(βΛ) is used to denote the volume of a fundamental region of the scaled lattice βΛ. Clearly v(βΛ)=β^(L)v(Λ). For convenience, v will by used as short hand for v(Λ). Upon rewriting (14) for the scaled lattice, the following is obtained: $\begin{matrix} \begin{matrix} {R_{0} = \quad {{h(p)} - {\left( {1/L} \right){\log_{2}\left( {v({\beta\Lambda})} \right)}}}} \\ {= \quad {{h(p)} - {\left( {1/L} \right){{\log_{2}\left( {\beta^{L}v} \right)}.}}}} \end{matrix} & (36) \end{matrix}$

Similarly, an expression for R is obtained by rewriting (15) to get $\begin{matrix} \begin{matrix} {R = \quad {{h(p)} - {\left( {1/L} \right){\log_{2}\left( {{Nv}({\beta\Lambda})} \right)}}}} \\ {= \quad {{h(p)} - {\left( {1/L} \right){{\log_{2}\left( {N\quad \beta^{L}v} \right)}.}}}} \end{matrix} & (37) \end{matrix}$

From (10), the two-channel distortion with the scaled lattice βΛ is given by

{overscore (d)} ₀ =G(Λ)v ^(2/L)β²,  (38)

since G(Λ)=G(βΛ).

In terms of R₀, the two-channel distortion {overscore (d)}₀ is thus given by

{overscore (d)} ₀ =G(Λ)2^(2h(p))2^(−2Ro).  (39)

Now let N=2^(L(aR+1)). Then R₀=R(1+a)+1 and $\begin{matrix} {{\overset{\_}{d}}_{0} = {\frac{{G(\Lambda)}2^{2{h{(p)}}}}{4}{2^{{- 2}{R{({1 + a})}}}.}}} & (40) \end{matrix}$

For a given N and R, the correct scale factor is obtained by solving (38) for β: $\begin{matrix} {\beta^{L} = {\frac{2^{{Lh}{(p)}}2^{- {{LR}{({1 + a})}}}}{2^{L}v}.}} & (41) \end{matrix}$

Consider {tilde over (d)} defined as $\begin{matrix} {{\overset{\sim}{d} = {\frac{1}{4N}{\sum\limits_{{\lambda\varepsilon}\quad {V_{0}{(0)}}}{{l^{2}(e)}\beta^{2}}}}},} & (42) \end{matrix}$

which is the common term in the bounds for {overscore (d)}_(s) given in (35). The quantity β² arises because the scaled lattices βΛ and βΛ′ are used. e is the edge that labels λ. The edges in question in (42) (the edges in ε_(d)(0)) have been obtained by choosing the N shortest edges in βΛ′, with one endpoint at 0 and then shifting these edges so that the midpoint is as close to the origin as possible. Thus each l²(e) is of the form iN^(2/L)/L for some i∈ZZ. The term N^(2/L) is a scale factor that comes from the fact that [Λ:Λ′]=N. The exponent is divided by L since normalized squared lengths are being used. Let the largest value of l²(e) in (42) be equal to KN^(2/L)/L and let B_(i) be the number of l²(e)'s that are equal to iN^(2/L)/L. Then $\begin{matrix} {\overset{\sim}{d} = {\frac{1}{4N}{\sum\limits_{i = 0}^{K}\quad {\frac{\beta^{2}\quad B_{i}N^{2/L}}{L}.}}}} & (43) \end{matrix}$

The displayed construction of the set ε_(d)(0) implies that the B_(i) can be obtained in terms of the coefficients of the theta series of the lattice Λ. To be specific, if Θ_(Λ)(z)=Σ_(i)A_(i)z^(i) is the theta series for the lattice Λ, then we can assert that

B _(i) =A _(i),0≦i≦K

 B _(k) ≦A _(k).  (44)

This fact will be used a little later. A_(i) is the number of lattice points λ with L∥λ∥²=i.

Now substitute β from (41) and use the fact that 2^(−2aR) =4/N ^(2/L), to obtain $\begin{matrix} \begin{matrix} {\overset{\sim}{d} = {\frac{2^{2{h{(p)}}}2^{{- 2}{R{({1 - a})}}}}{v^{2/L}N^{({1 + {2/L}})}L}{\sum\limits_{i = 0}^{K}\quad {\quad B_{i}}}}} \\ {{= {\Xi {\sum\limits_{i = 0}^{K}\quad {\quad B_{i}}}}},} \end{matrix} & (45) \end{matrix}$

where Ξ=2^(2h(p))2^(−2R(1−a))/(v^(2/L)N^((1+2/L))L). The term Σ_(i=0) ^(K)iB_(i) can be bounded in terms of the A_(i)'s by $\begin{matrix} {{\sum\limits_{i = 0}^{K - 1}\quad {\quad A_{i}}} \leq {\sum\limits_{i = 0}^{K}\quad {\quad B_{i}}} \leq {\sum\limits_{i = 0}^{K}\quad {\quad {A_{i}.}}}} & (46) \end{matrix}$

Upon defining S(m)=Σ_(i=0) ^(m)A_(i) and using Abel's summation formula, the following is obtained: $\begin{matrix} {{\sum\limits_{i = 0}^{m}\quad {\quad A_{i}}} = {{{mS}(m)} - {\sum\limits_{n = 0}^{m - 1}\quad {{S(n)}.}}}} & (47) \end{matrix}$

The term S(n) is the number of lattice points in the first n shells of the lattice Λ. This is roughly the ratio of the volume of S_(L)(n¹²), a sphere of radius n^(1/2), to v, the volume of the Voronoi cell of Λ. To be specific if B_(L) denotes the volume of a sphere of unit radius in ^(L) then the following estimate for S(n) is obtained: $\begin{matrix} {{S(n)} = {\frac{B_{L}n^{L/2}}{v}{\left( {1 + {o(1)}} \right).}}} & (48) \end{matrix}$

Upon using (48) in order to estimate S(m), the following is obtained: $\begin{matrix} \begin{matrix} {{\sum\limits_{i = 0}^{m}\quad {\quad A_{i}}} = {\left( {\frac{{mB}_{L}m^{L/2}}{v} - {\sum\limits_{n = 0}^{m - 1}\quad \frac{B_{L}n^{L/2}}{v}}} \right)\left( {1 + {o(1)}} \right)}} \\ {= {\frac{B_{L}}{v}\left( {n^{{L/2} + 1} - {\sum\limits_{n = 0}^{m - 1}\quad n^{L/2}}} \right)\left( {1 + {o(1)}} \right)}} \\ {= {\frac{B_{L}}{v}\left( {m^{({{L/2} + 1})} - \frac{m^{({{L/2} + 1})}}{{L/2} + 1} + {o\left( m^{{L/2} + 1} \right)}} \right)\left( {1 + {o(1)}} \right)}} \\ {= {\frac{B_{L}}{v}\frac{L}{L + 2}{m^{({{L/2} + 1})}\left( {1 + {o(1)}} \right)}}} \end{matrix} & (49) \end{matrix}$

On substituting (49) into (45) and observing from (48), that N=(B_(L)K^(L/2)/v)(1+o(1)), the following is obtained: $\begin{matrix} {\overset{\sim}{d} = {\frac{1}{B\frac{2/L}{L}\left( {L + 2} \right)}2^{2{h{(p)}}}2^{{- 2}{R{({1 - a})}}}{\left( {1 + {o(1)}} \right).}}} & (50) \end{matrix}$

But $\begin{matrix} {{B_{L} = \frac{\pi^{L/2}}{\Gamma \left( {{L/2} + 1} \right)}},} & (51) \end{matrix}$

and G(S_(L)), the normalized second moment of a sphere in L dimensions, is given by $\begin{matrix} {{G\left( S_{L} \right)} = {\frac{1}{\left( {L + 2} \right)\pi}{{\Gamma \left( {{L/2} + 1} \right)}^{2/L}.}}} & (52) \end{matrix}$

Thus, B_(L) is given in terms of G(S_(L)) by $\begin{matrix} {{{B\frac{2/L}{L}} = \frac{1}{{G\left( S_{L} \right)}\left( {L + 2} \right)}},} & (53) \end{matrix}$

and from (50) it follows that

{tilde over (d)}=G(S _(L))2^(2n(p))2^(−2R(1−a))(1+o(1)).  (54)

The other terms in (35) are {overscore (d)}₀ and r*(Λ′)². The term {overscore (d)}₀ decays as 2^(−2R(1+a)) and r*(Λ)² decays like β²N^(2/L), which in turn decays as 2^(−2R). Thus lim_(R→∞){overscore (d)}_(s)2^(2R(1−a))=lim _(R→∞){overscore (d)}2^(2R(1−a)) and the following final result is obtained:

lim _(R→∞) {overscore (d)}2^(2R(1−a)) =G(S _(L))2^(2h(p)).  (55)

Glossary

The following definitions are used for the purposes of the present invention:

J_(n)={1,2, . . . , n}

L: Source vector dimension.

N: Index of the sublattice, i.e., N=[λ:Λ′]. Also denotes the reuse index, i.e., the number of elements of the central codebook that share the same channel-one label (equivalently the number of elements of the central codebook that share the same channel-two label)

α: Desired labeling function that assigns an ordered pair of sublattice points to every lattice point.

α_(u): Pre-cursor to the labeling function. Maps every lattice point to an unordered pair of sub-lattice points.

V₀(λ′): Discrete Voronoi set, the set of all lattice points closer to sublattice point λ′ than to any other sublattice point.

ε_(u)(λ′): Image of V₀(λ′) under α_(u).

E: Expectation w.r.t. source distribution.

p(·): Source probability density function.

<x,y>: Dimension-normalized inner product=(1/L) Σ_(i=1) ^(L)x_(i)y_(i).

∥x∥²: Dimension-normalized Euclidean squared norm, ∥x∥²=<x,x>.

The present invention has been described in terms of several embodiments solely for the purpose of illustration. Persons skilled in the art will recognize from this description that the invention is not limited to the embodiments described, but may be practiced with modifications and alterations limited only by the spirit and scope of the appended claims. 

What is claimed is:
 1. A method for transmitting data using multiple description vector quantization, the method comprising: (a) quantizing a source vector at a lattice vector quantizer; (b) applying a labeling function to the source vector quantized in (a), the labeling function creating at least a first data stream and a second data stream such that the first data stream includes a first representation of the source vector, and the second data stream includes a second representation of the source vector, the first representation and second representation having equivalent reproduction quality, wherein said applying a labeling function includes associating the quantized source vector with at least a first sublattice point that is itself associated with a first data code word, and a second sublattice point that is itself associated with a second data code word; and (c) encoding both the first data stream and the second data stream.
 2. The method of claim 1, wherein the first encoded data stream and the second encoded data stream are transmitted.
 3. The method of claim 2, wherein the labeling function is created by the following steps: (1) creating a discrete Voronoi set of lattice points for a given sublattice point, the discrete Voronoi set of lattice points consisting of a definite number of lattice points; (2) creating a plurality of edges for the given sublattice point; and (3) matching each lattice point in the discrete Voronoi set with a distinct edge in the plurality of edges.
 4. The method of claim 2, wherein the sublattice points are defined by scaling a lattice in the lattice vector quantizer.
 5. The method of claim 4, wherein the sublattice points are further defined by rotating the scaled lattice in the lattice vector quantizer.
 6. The method of claim 2, wherein said transmitting step includes using an edge graph with a plurality of sections, each section having the form {λ′_(i), λ′_(j)}, said transmitting step including the substeps of: (i) transmitting, for an occurrence of a first section, λ′_(i) in a first data stream, and λ′_(j) in a second data stream; and (ii) transmitting, for an occurrence of a second section adjacent to the first section, λ′_(j) in the first data stream, and λ′_(i) in the second data stream.
 7. A method for making a labeling function, the method comprising: (a) creating a discrete Voronoi set of lattice points for a given sublattice point, the discrete Voronoi set of lattice points consisting of a definite number of lattice points; (b) creating a plurality of edges for the given sublattice point, wherein the edges are chosen by determining a plurality of edges having a number of edges, the number of edges being equal to the definite number of lattice points in the discrete Voronoi set; and (c) matching each lattice point in the discrete Voronoi set with a distinct edge in the plurality of edges.
 8. A method for encoding data using multiple-description-vector quantization, the method comprising: (a) associating a lattice point with at least a first sublattice point and a second sublattice point, the lattice point being associated with a quantized source vector; (b) producing a first data code word associated with the first sublattice point and a second data code word associated with the second sublattice point; and (c) transmitting, in a first data stream, the first associated data code word, and in a second data stream, the second associated data code word.
 9. The method of claim 8, wherein said transmitting step (c) includes the substeps of: (i) creating an edge graph with a plurality of sections, each section having the form {λ′_(i), λ′_(j)}; (ii) transmitting, for an occurrence of a first section, λ′_(i) in a first data stream, and λ′_(j) in a second data stream; and (iii) transmitting, for an occurrence of a second section adjacent to the first section, λ′_(j) in the first data stream, and λ′_(i) in the second data stream.
 10. A method for decoding an encoded data stream that has been encoded with multiple-description-vector quantization, the encoded data stream including a first data stream representing a first set of sublattice points and including a second data stream representing a second set of sublattice points, the method comprising: (a) retrieving from the first data stream a representation of a first sublattice point from the first set of sublattice points; (b) retrieving from the second data stream a representation of a second sublattice point from the second set of sublattice points; and (c) determining a single data code word, the single data code word being associated with the retrieved representation of the first sublattice point and associated with the retrieved representation of the second sublattice point.
 11. An apparatus for transmitting a plurality of data streams using multiple description vector quantization, the apparatus comprising: (a) a processor; and (b) a memory storing instructions adapted to be executed by said processor, the instructions including: (i) quantizing a source vector at a lattice vector quantizer; (ii) applying a labeling function to the source vector quantized in (i), the labeling function creating at least a first data stream and a second data stream, the first data stream including a first representation of the source vector, and the second data stream including a second representation of the source vector, the first representation and the second representation having equivalent reproduction quality, wherein said applying a labeling function includes associating the quantized source vector with at least a first sublattice point associated with a first data code word and a second sublattice point associated with a second data code word; and (iii) encoding both the first data stream and the second data stream.
 12. The apparatus of claim 11, wherein the first encoded data stream and the second encoded data stream are transmitted.
 13. The apparatus of claim 12, wherein the sublattice points are defined by scaling a lattice in the lattice vector quantizer.
 14. The apparatus of claim 13, wherein the sublattice points are further defined by rotating the scaled lattice in the lattice vector quantizer.
 15. The apparatus of claim 12, wherein said transmitting step includes using an edge graph with a plurality of sections, each section having the form {λ′_(i), λ′_(j)}, said transmitting step including the substeps of: (i) transmitting, for an occurrence of a first section, λ′_(i) in a first data stream, and λ′_(j) in a second data stream; and (ii) transmitting, for an occurrence of a second section adjacent to the first section, λ′_(j) in the first data stream, and λ′_(i) in the second data stream.
 16. An apparatus for making a labeling function, the apparatus comprising: (a) a processor; and (b) a memory storing finctions adapted to be executed by said processor, the instructions including: (i) creating a discrete Voronoi set of lattice points for a given sublattice point, the discrete Voronoi set of lattice points consisting of a definite number of lattice points; (ii) creating a plurality of edges for the given sublattice point, wherein the edges are chosen by determining a plurality of edges having a number of edges, the number of edges being equal to the definite number of lattice points in the discrete Voronoi set; and (iii) matching each lattice point in the discrete Voronoi set with a distinct edge in the plurality of edges.
 17. An apparatus for encoding data using multiple-description-vector quantization, the apparatus comprising: (a) a processor; and (b) a memory storing instructions adapted to be executed by said processor, the instructions including: (i) associating a lattice point with at least a first sublattice point and a second sublattice point, the lattice point being associated with a quantized source vector; (ii) producing a first data code word associated with the first sublattice point and a second data code word associated with the second sublattice point; and (iii) transmitting, in a first data stream, the first associated data code word, and in a second data stream, the second associated data code word.
 18. An apparatus for decoding an encoded data stream that has been encoded with multiple-description-vector quantization, the encoded data stream including a first data stream representing a first set of sublattice points and including a second data stream representing a second set of sublattice points, the apparatus comprising: (a) a processor; and (b) a memory storing instructions to be executed by said processor, said instructions including: (i) retrieving from the first data stream a representation of a first sublattice point from the first set of sublattice points; (ii) retrieving from the second data stream a representation of a second sublattice point from the second set of sublattice points; and (iii) determining a single data code word, the single data code word being associated with the retrieved representation of the first sublattice point and associated with the retrieved representation of the second sublattice point. 